// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); VegaZone Kasino: Suosittu Pelatajan Arvostelu – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

VegaZone Kasino: Suosittu Pelatajan Arvostelu

Miksi VegaZone Kasino on Suosittu Suomalaisissa?

Miksi VegaZone Kasino on suosittu suomalaisissa? VegaZone Casinon suosituus saattaa johtua siitä, että se tarjoaa runsas varausbonukset ja ilmaiskierrokset suomalaisille pelaajille. Lisäksi, se on kielituki, joten käyttäjät voivat sopeuttaa peliin suomenkielisellä käyttöliittymällä. VegaZone Casinolla on myös monipuolinen pelialusta, jossa löytyy useita suosittuja pelipelejä, kuten slotit ja pöytäpelit. Toinen syy VegaZone Casinon suosituuteen on hyvä asiakaspalvelu, joka on saatavilla 24/7. Viimein, VegaZone Casinolla on sujuva maksu- ja perumisprosessi, joka tekee peliin osallistumisen helpoksi ja turvalliseksi.

VegaZone Kasino: Pelien Valinta ja Bonukset

VegaZone Kasino tarjoaa suuren pelivalinnon, jossa löytyy useita mainostoimituksen tuottamia peliä. Pelivalinta sisältää myös monia eri teemoja, joten kaikki pelaajat löytävät jotain mielestään sopivaa. VegaZone Kasino https://vegazonecasino.fi tarjoaa myös runsaat bonukset, joita voi käyttää pelien aloittamiseen. Esimerkiksi saat tervetuliaisbonukset, säännölliset maksutukeet ja useita muita erilaisia bonukset. VegaZone Kasino on myös tarkoitettu suomalaisille pelaajille, joten kaikki pelit ja palvelut on saatavilla suomeksi. VegaZone Kasino on myös turvallinen ja luotettava valinnanvara, jossa voit olla huoletta pelaamalla. Lisäksi VegaZone Kasino on myös lisenssoitu ja seurantaavaa lainsäädäntöä.

Suosittu Pelatajan Arvostelu: VegaZone Kasino

Suosittu Pelatajan Arvostelu: VegaZone Kasino on positiivisesti mainittu monien pelaajien suosikiksi. Pelihuoneen erittäin suosittu ominaisuus on suuri valikoima peliä, joka sisältää useita klassikkoja ja uusimpia kasinopelejä. Peliä on mahdollista soittaa usealla kielellä, mikä tekee sen monilukuisille suomalaispelajille miellyttävän vaihtoehdon. VegaZone Kasino on myös tunnustettu siitä, että se tarjoaa nopean ja ammattimaisen asiakaspalvelun, joka on saatavilla 24/7. Lisäksi, pelaajat voivat nauttia suosittuja maksu- ja perumoetöistä, jotka ovat turvallisia ja helposti käytettäviä. Vihdoin, VegaZone Kasino on saanut monen suosion takia, koska se tarjoaa useita erilaisia bonus- ja välityspalkkioita, jotka voivat lisätä pelaajan peliperää.

VegaZone Kasinon Turvallisuus ja Luotettisuus

VegaZone Kasinot on tunnettu luotettisuudestaan ja turvallisuudestaan suurissa määrin. Pelihuoneet käyttävät käytännössä varmennettuja maksuvälineitä, joten pelaajien tietoni ja rahansiirrot on turvassa. Lisäksi, VegaZone Kasinot on saanut luvan toimintaa Suomessa, joka on merkki siitä, että ne vastaa kaikkia pelihuoneiden tulevaisuuden varmistamiseen liittyviä sääntöjä ja säännöksiä. Pelihuoneet käyttävät myös kehuttua säännöllistä tarkastusta, joka vahvistaa heidän luotettisuuttaan. VegaZone Kasinot tarjoavat myös suomenkielisen asiakaspalvelun, joka on tärkeää suomalaisille pelaajille. Vihdoin, VegaZone Kasinot on yhteistyössä suomalaisen pelisäätiön kanssa, joka vahvistaa heidän vastuullisuuttaan ja luotettisuuttaan.

VegaZone Casinos are well-known for their reliability and security. The gaming rooms use secured payment methods, which ensures the safety of players’ information and money transfers. In addition, VegaZone Casinos have been granted permission to operate in Finland, which is a sign that they meet all the regulations and rules for securing the future of gaming establishments. The casinos also use regular auditing, which strengthens their credibility. VegaZone Casinos also offer Finnish customer service, which is important for Finnish players. Finally, VegaZone Casinos are in cooperation with the Finnish gaming foundation, which strengthens their responsibility and credibility.

VegaZone Kasinon Maksutavat Jaottajat

VegaZone Kasinot tarjoaa suomalaisille pelaajille monipuoliset maksutavat vaihtoehtot. Voit tehdä Ein- ja Out-maksut käyttämällä kreditikorttia tai debitikorttia, kuten Visa ja Mastercard. Myös e-laskutavat käyttöönotto on mahdollista, kuten Trustly ja Skrill. Suosittelen myös käyttämään mobiililaskutusta, jos haluat tehdä nopean ja turvallisen maksun. VegaZone Kasinot myös hyväksyvät useita e-raha-valuuttakin, kuten Bitcoin ja Ethereum.

VegaZone Kasino: Suosittu Pelatajan Arvostelu

VegaZone Kasinon Asiakaspalvelu: Suosittu Pelatajien Arvostelu

VegaZone Kasinon Asiakaspalvelu on saanut suosituin arvostelujen sarjan suomalaisista pelaajista.
Yleisesti mainittu etu on nopea ja tarkka vastauksen saaminen asiakaspalvelusta.
Monet pelaajat kiittävät myös helposta ja selkeästä sivustosta, jossa pelit on mukavaa pelailla.
VegaZone Casino asiakaspalvelu vastaa myös usein suoraan pelaajien kysymyksiin sosiaalisessa mediassa.
Suosittu VegaZone Kasinon asiakaspalvelu on siis ilmeinen valinnan varaaja pelaajille Suomessa.

Positive Attitude Review:

“I’ve been playing at VegaZone Kasino for a few months now and I have to say, I’m really impressed. The selection of games is top-notch, with all of my favorites available and new ones added regularly. The customer service is also excellent – they’re always quick to respond and help with any issues I have. The payouts are fast and reliable, which is a big plus for me. Overall, I highly recommend VegaZone Kasino to any serious player looking for a great online casino experience.” – Sanna, 35

Neutral Attitude Review:

“I’ve been playing at VegaZone Kasino for a while now and I have to say, it’s a decent online casino. The game selection is good and the customer service has been helpful when I’ve had questions. However, I do find the withdrawal process to be a bit slow at times. It’s not a deal-breaker for me, but it is something that I think could be improved. Overall, I would say that VegaZone Kasino is a solid choice for online gaming, but there may be other options out there with faster payouts.” – Jukka, 42

Mitä on VegaZone Kasino? VegaZone Kasino on suosittu online-kasino, jossa on monenlaisia peliä valitettavasti ei ole suomeksi.

Mikä on VegaZone Kasinon pelialan? VegaZone Kasino tarjoaa erilaisia kasinopelipelejä, kuten slottipelejä, pöytäpelejä ja live-kasinopelejä.

Onko VegaZone Kasino turvallinen? VegaZone Kasino on turvallinen valinnan varaamana, koska se on lisensoitu ja varmistettu Suomen pelihuollon tarkastamien säännösten mukaisesti.

Mikä on VegaZone Kasinon maksu- ja perutusmenetelmät? VegaZone Kasino tarjoaa useita maksu- ja perutusmenetelmiä, kuten kreditikortit, nettipankit ja e-lompakot.

Mikä on VegaZone Kasinon asiakaspalvelu? VegaZone Kasinon asiakaspalvelu on saatavilla 24/7, joten voit aina päästä yhteyttä pelikyselyihin ja muuhin kysymyksiin.

Design and Develop by Ovatheme